package cache_service

//import (
//	"fmt"
//	"github.com/gin-gonic/gin"
//	rdb "github.com/redis/go-redis/v9"
//	"github.com/thedevsaddam/gojsonq/v2"
//	"gorm.io/gorm"
//	"interview/pkg/global"
//	"interview/pkg/utils"
//)
//
//type RedisService struct {
//	//mysql basesrv.MysqlService
//	redis *rdb.Client
//}
//
//func NewRedisService(ctx *gin.Context) RedisService {
//	return RedisService{
//		//mysql: basesrv.NewMysqlService(ctx),
//		redis: global.Redis,
//	}
//}
//
//// JsonQuery 每一次新建不同JSONQ实例, 否则可能查询条件重叠, 找不到记录
//func (s *RedisService) JsonQuery() *gojsonq.JSONQ {
//	return gojsonq.New()
//}
//
//// GetListFromCache 从缓存中获取model全部数据, 返回json字符串, 参数list为结构体数组指针, 必须传地址否则可能没数据
//func (s *RedisService) GetListFromCache(list interface{}, tableName string) string {
//	cacheKey := fmt.Sprintf("%s_%s", global.Conf.Mysql.Database, tableName)
//	res, err := s.redis.Get(cacheKey).Result()
//	if err != nil {
//		global.Logger.Debugf("[GetListFromCache] 读取redis缓存异常: %v", err)
//	}
//	if list != nil {
//		utils.JsonString2Struct(res, list)
//	}
//	return res
//}
//
//// GetItemByIdFromCache 从缓存中获取model全部数据, 返回json字符串, 参数m为结构体指针, 必须传地址否则可能没数据
//func (s *RedisService) GetItemByIdFromCache(id uint, m interface{}, tableName string) error {
//	json := s.GetListFromCache(nil, tableName)
//	// id在JSONQ中以int存在
//	res, err := JsonQueryFindOne(s.JsonQuery().FromString(json).Where("id", "=", int(id)))
//	if err != nil {
//		return err
//	}
//	utils.Struct2StructByJson(res, m)
//	return nil
//}
//
//func JsonQueryFindOne(jsonq *gojsonq.JSONQ) (interface{}, error) {
//	// 获取查询列表
//	res := jsonq.Get()
//	switch res.(type) {
//	case []interface{}:
//		v, _ := res.([]interface{})
//		if len(v) > 0 {
//			// find one
//			return v[0], nil
//		}
//	}
//	return nil, gorm.ErrRecordNotFound
//}
